home *** CD-ROM | disk | FTP | other *** search
/ Motor Sport Digital Archive Collection 1960s / Motor Sport Digital Archive Collection 1960s.iso / main.swf / scripts / mx / binding / RepeatableBinding.as < prev    next >
Encoding:
Text File  |  2008-05-21  |  2.9 KB  |  99 lines

  1. package mx.binding
  2. {
  3.    import flash.events.Event;
  4.    import mx.core.IRepeaterClient;
  5.    import mx.core.mx_internal;
  6.    
  7.    use namespace mx_internal;
  8.    
  9.    public class RepeatableBinding extends Binding
  10.    {
  11.       mx_internal static const VERSION:String = "2.0.1.0";
  12.       
  13.       public function RepeatableBinding(param1:Object, param2:Function, param3:Function, param4:String)
  14.       {
  15.          super(param1,param2,param3,param4);
  16.       }
  17.       
  18.       private function recursivelyProcessIDArray(param1:Object) : void
  19.       {
  20.          var array:Array = null;
  21.          var n:int = 0;
  22.          var i:int = 0;
  23.          var client:IRepeaterClient = null;
  24.          var o:Object = param1;
  25.          if(o is Array)
  26.          {
  27.             array = o as Array;
  28.             n = int(array.length);
  29.             i = 0;
  30.             while(i < n)
  31.             {
  32.                recursivelyProcessIDArray(array[i]);
  33.                i++;
  34.             }
  35.          }
  36.          else if(o is IRepeaterClient)
  37.          {
  38.             client = IRepeaterClient(o);
  39.             wrapFunctionCall(this,function():void
  40.             {
  41.                var _loc1_:Object = null;
  42.                _loc1_ = wrapFunctionCall(this,mx_internal::srcFunc,null,client.instanceIndices,client.repeaterIndices);
  43.                if(BindingManager.debugDestinationStrings[mx_internal::destString])
  44.                {
  45.                   trace("RepeatableBinding: destString = " + mx_internal::destString + ", srcFunc result = " + _loc1_);
  46.                }
  47.                mx_internal::destFunc(_loc1_,client.instanceIndices);
  48.             },o);
  49.          }
  50.       }
  51.       
  52.       override public function execute(param1:Object = null) : void
  53.       {
  54.          var _loc2_:String = null;
  55.          var _loc3_:Array = null;
  56.          if(mx_internal::isExecuting)
  57.          {
  58.             return;
  59.          }
  60.          mx_internal::isExecuting = true;
  61.          if(!param1)
  62.          {
  63.             _loc2_ = mx_internal::destString.substring(0,mx_internal::destString.indexOf("."));
  64.             param1 = mx_internal::document[_loc2_];
  65.          }
  66.          else if(typeof param1 == "number")
  67.          {
  68.             _loc2_ = mx_internal::destString.substring(0,mx_internal::destString.indexOf("."));
  69.             _loc3_ = mx_internal::document[_loc2_] as Array;
  70.             if(_loc3_)
  71.             {
  72.                param1 = _loc3_[param1];
  73.             }
  74.             else
  75.             {
  76.                param1 = null;
  77.             }
  78.          }
  79.          if(param1)
  80.          {
  81.             recursivelyProcessIDArray(param1);
  82.          }
  83.          mx_internal::isExecuting = false;
  84.       }
  85.       
  86.       public function eventHandler(param1:Event) : void
  87.       {
  88.          if(mx_internal::isHandlingEvent)
  89.          {
  90.             return;
  91.          }
  92.          mx_internal::isHandlingEvent = true;
  93.          execute();
  94.          mx_internal::isHandlingEvent = false;
  95.       }
  96.    }
  97. }
  98.  
  99.